home *** CD-ROM | disk | FTP | other *** search
-
- ; SETJMP.A
- ;
-
- section text,code
-
- xdef _setjmp
- xdef _longjmp
-
- _setjmp
- move.l 4(sp),A0 ; jmp_buf (16 longwords)
- move.l (sp),A1 ; return address
- movem.l D2-D7/A1-A7,(A0)
- moveq.l #0,D0 ; direct call returns 0
- rts
-
- _longjmp
- move.l 4(sp),A0 ; jmp_buf
- move.l 8(sp),D0 ; return value
- movem.l (A0),D2-D7/A1-A7
- addq.l #4,sp ; skip where rts would normally be
- ; but probably has been overwritten
-
- jmp (A1) ; this is the real return address
-
- END
-
-